主题
设置日志级别 - LogSetLevel
函数简介
设置日志的输出级别,只有大于或等于此级别的日志才会被记录。
接口名称
LogSetLevelDLL调用
c
int32_t LogSetLevel(int64_t instance, int64_t loggerHandle, int32_t level);参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| instance | 长整数型 | OLAPlug对象的指针,由 CreateCOLAPlugInterFace 接口生成。 |
| loggerHandle | 长整数型 | 日志实例句柄(0 表示默认实例)。 |
| level | 整数型 | 日志级别,见 LogLevel 枚举。 |
LogLevel 枚举值
| 枚举值 | 值 | 说明 |
|---|---|---|
| OLA_LOG_LEVEL_TRACE | 0 | 跟踪级别 |
| OLA_LOG_LEVEL_DEBUG | 1 | 调试级别 |
| OLA_LOG_LEVEL_INFO | 2 | 信息级别 |
| OLA_LOG_LEVEL_WARN | 3 | 警告级别 |
| OLA_LOG_LEVEL_ERROR | 4 | 错误级别 |
| OLA_LOG_LEVEL_CRITICAL | 5 | 严重错误级别 |
| OLA_LOG_LEVEL_OFF | 6 | 关闭日志 |
示例
推荐联动:LogSetLevel → 写日志验证过滤 → LogGetLevel 核对。
级别:TRACE=0 DEBUG=1 INFO=2 WARN=3 ERROR=4 CRITICAL=5 OFF=6。
SDK 调用
cpp
#include "OLAPlugServer.h"
#include <cstdio>
OLAPlugServer ola;
const int64_t logger = 0; // 默认实例
// 设为 INFO(2):低于 INFO 的 DEBUG 会被过滤
int ret = ola.LogSetLevel(logger, 2); // INFO
if (ret != 1) {
return;
}
ola.LogInfo("app started"); // 会输出
ola.LogDebug("debug detail (filtered)"); // 通常被过滤
int level = ola.LogGetLevel(logger);
std::printf("current level: %d\n", level);
// 若需看到 Debug:LogSetLevel(logger, 1)csharp
using System;
using OLAPlug;
var ola = new OLAPlugServer();
long logger = 0;
// 设为 INFO(2):低于 INFO 的 DEBUG 会被过滤
int ret = ola.LogSetLevel(logger, 2); // INFO
if (ret != 1) return;
ola.LogInfo("app started"); // 会输出
ola.LogDebug("debug detail (filtered)"); // 通常被过滤
int level = ola.LogGetLevel(logger);
Console.WriteLine("current level: " + level);
// 若需看到 Debug:LogSetLevel(logger, 1)python
from OLAPlugServer import OLAPlugServer
ola = OLAPlugServer()
logger = 0
# 设为 INFO(2):低于 INFO 的 DEBUG 会被过滤
ret = ola.LogSetLevel(logger, 2) # INFO
if ret != 1:
raise RuntimeError("failed")
ola.LogInfo("app started") # 会输出
ola.LogDebug("debug detail (filtered)") # 通常被过滤
level = ola.LogGetLevel(logger)
print("current level:", level)
# 若需看到 Debug:LogSetLevel(logger, 1)java
import com.olaplug.OLAPlugServer;
OLAPlugServer ola = new OLAPlugServer();
long logger = 0;
// 设为 INFO(2):低于 INFO 的 DEBUG 会被过滤
int ret = ola.LogSetLevel(logger, 2); // INFO
if (ret != 1) {
return;
}
ola.LogInfo("app started"); // 会输出
ola.LogDebug("debug detail (filtered)"); // 通常被过滤
int level = ola.LogGetLevel(logger);
System.out.println("current level: " + level);
// 若需看到 Debug:LogSetLevel(logger, 1)go
import (
"fmt"
"github.com/ola/olaplug/olaplug"
)
ola, _ := olaplug.NewOLAPlugServer("OLAPlug_x64.dll")
defer ola.ReleaseObj()
logger := int64(0)
// 设为 INFO(2):低于 INFO 的 DEBUG 会被过滤
ret := ola.LogSetLevel(logger, 2) // INFO
if ret != 1 {
return
}
ola.LogInfo("app started") // 会输出
ola.LogDebug("debug detail (filtered)") // 通常被过滤
level := ola.LogGetLevel(logger)
fmt.Println("current level:", level)
// 若需看到 Debug:LogSetLevel(logger, 1)rust
use olaplug::OLAPlugServer;
let ola = OLAPlugServer::new("OLAPlug_x64.dll").unwrap();
let logger = 0i64;
// 设为 INFO(2):低于 INFO 的 DEBUG 会被过滤
let ret = ola.log_set_level(logger, 2); // INFO
if ret != 1 {
return;
}
ola.log_info("app started"); // 会输出
ola.log_debug("debug detail (filtered)"); // 通常被过滤
let level = ola.log_get_level(logger);
println!("current level: {}", level);
// 若需看到 Debug:LogSetLevel(logger, 1)cpp
var ola = com("OlaPlug.OlaSoft")
var logger = 0
// 设为 INFO(2):低于 INFO 的 DEBUG 会被过滤
var ret = ola.LogSetLevel(logger, 2) // INFO
if(ret == 1) {
ola.LogInfo("app started") // 会输出
ola.LogDebug("debug detail (filtered)") // 通常被过滤
var level = ola.LogGetLevel(logger)
traceprint("current level: " + level)
// 若需看到 Debug:LogSetLevel(logger, 1)
}vbscript
Set ola = CreateObject("OlaPlug.OlaSoft")
logger = 0
' 设为 INFO(2):低于 INFO 的 DEBUG 会被过滤
ret = ola.LogSetLevel(logger, 2)
If ret = 1 Then
ola.LogInfo "app started"
ola.LogDebug "debug detail (filtered)"
level = ola.LogGetLevel(logger)
TracePrint "current level: " & level
' 若需看到 Debug:LogSetLevel(logger, 1)
End Iftext
.局部变量 ola, OLAPlug
.局部变量 ret, 整数型
.局部变量 logger, 长整数型
.局部变量 level, 整数型
ola.Create ()
logger = 0
' 设为 INFO(2):低于 INFO 的 DEBUG 会被过滤
ret = ola.LogSetLevel (logger, 2) ' INFO
.如果真 (ret = 1)
ola.LogInfo (“app started”) ' 会输出
ola.LogDebug (“debug detail (filtered)”) ' 通常被过滤
level = ola.LogGetLevel (logger)
调试输出 (“current level:”, level)
' 若需看到 Debug:LogSetLevel(logger, 1)
.如果真结束aardio
import OLAPlugServer;
var ola = OLAPlugServer();
var logger = 0;
// 设为 INFO(2):低于 INFO 的 DEBUG 会被过滤
var ret = ola.LogSetLevel(logger, 2); // INFO
if(ret == 1){
ola.LogInfo("app started"); // 会输出
ola.LogDebug("debug detail (filtered)"); // 通常被过滤
var level = ola.LogGetLevel(logger);
io.print("current level: ", level);
// 若需看到 Debug:LogSetLevel(logger, 1)
}text
变量 ola <类型 = OLAPlugServer>
ola = 新建 OLAPlugServer
长整数 logger = 0
' 设为 INFO(2):低于 INFO 的 DEBUG 会被过滤
整数 ret = ola.LogSetLevel(logger, 2) ' INFO
如果真 (ret = 1)
{
ola.LogInfo("app started") ' 会输出
ola.LogDebug("debug detail (filtered)") ' 通常被过滤
整数 level = ola.LogGetLevel(logger)
调试输出 ("current level:", level)
' 若需看到 Debug:LogSetLevel(logger, 1)
}cpp
#include "OLAPlugServer.h"
#include <cstdio>
OLAPlugServer ola;
int64_t logger = 0;
// 设为 INFO(2):低于 INFO 的 DEBUG 会被过滤
int32_t ret = ola.LogSetLevel(logger, 2); // INFO
if (ret != 1) {
return;
}
ola.LogInfo("app started"); // 会输出
ola.LogDebug("debug detail (filtered)"); // 通常被过滤
int32_t level = ola.LogGetLevel(logger);
std::printf("current level: %d\n", level);
// 若需看到 Debug:LogSetLevel(logger, 1)原生 DLL 调用
cpp
long instance = CreateCOLAPlugInterFace();
long logger = 0;
int ret = LogSetLevel(instance, logger, 2); // INFO
if (ret != 1) {
return;
}
LogInfo(instance, "app started");
LogDebug(instance, "debug detail (filtered)");
int level = LogGetLevel(instance, logger); // 期望 2csharp
using System.Runtime.InteropServices;
[DllImport("OLAPlug_x64.dll", CallingConvention = CallingConvention.StdCall)]
static extern long CreateCOLAPlugInterFace();
[DllImport("OLAPlug_x64.dll", CallingConvention = CallingConvention.StdCall)]
static extern int LogSetLevel(long ola, long loggerHandle, int level);
[DllImport("OLAPlug_x64.dll", CallingConvention = CallingConvention.StdCall)]
static extern int LogGetLevel(long ola, long loggerHandle);
[DllImport("OLAPlug_x64.dll", CallingConvention = CallingConvention.StdCall)]
static extern int LogInfo(long ola, string message);
[DllImport("OLAPlug_x64.dll", CallingConvention = CallingConvention.StdCall)]
static extern int LogDebug(long ola, string message);
long instance = CreateCOLAPlugInterFace();
long logger = 0;
int ret = LogSetLevel(instance, logger, 2); // INFO
if (ret != 1) return;
LogInfo(instance, "app started");
LogDebug(instance, "debug detail (filtered)");
int level = LogGetLevel(instance, logger);python
from ctypes import CDLL, c_int, c_int64
ola = CDLL("OLAPlug_x64.dll")
ola.CreateCOLAPlugInterFace.restype = c_int64
instance = ola.CreateCOLAPlugInterFace()
logger = 0
ret = ola.LogSetLevel(instance, logger, 2) # INFO
if ret != 1:
raise RuntimeError("LogSetLevel failed")
ola.LogInfo(instance, b"app started")
ola.LogDebug(instance, b"debug detail (filtered)")
print("current level:", ola.LogGetLevel(instance, logger))返回值
| 返回值 | 说明 |
|---|---|
1 | 成功。 |
0 | 失败。 |
注意事项
| 项目 | 说明 |
|---|---|
| 默认值 | OLA_LOG_LEVEL_INFO (2)。 |
| 只有大于或等于此级别的日志才会被记录 | 只有大于或等于此级别的日志才会被记录。 |
| 此设置立即生效 | 此设置立即生效,无需重新初始化。 |
| 开发环境使用 DEBUG 或 TRACE | 建议开发环境使用 DEBUG 或 TRACE,生产环境使用 INFO 或 WARN。 |
